package manejadores;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import censo.db;
import entidades.UsuarioServicio;

public class ManejadorUsuarioServicio {

	private UsuarioServicio usuario;
	private db conexion = null;
	public UsuarioServicio getUsuario() {
		return usuario;
	}
	public void setUsuario(UsuarioServicio usuario) {
		this.usuario = usuario;
	}
	public db getConexion() {
		return conexion;
	}
	public void setConexion(db conexion) {
		this.conexion = conexion;
	}
	public ManejadorUsuarioServicio(db conexion, UsuarioServicio usuario) {
		super();
		this.conexion = conexion;
		this.usuario = usuario;
	}
	public ManejadorUsuarioServicio(db conexion) {
		super();
		this.conexion = conexion;
	}
	
	public boolean Add() throws SQLException {
		boolean result = false;
		String sql = "INSERT INTO usuario_servicio (CODIGO,NOMBRE,DIRECCION,BARRIO,MUNICIPIO,AREA,TELEFONO,CIIU,TIPO_USO,TIPO_PREDIO," +
				"COMERCIALIZADOR,ESTADO_SERVICIO,VINCULO,TIPO_CONEXION,TENSION,TIPO_RED,MEDIDOR,MARCA,NOTAS,FECHA_SISTEMA,USUARIO) " +
				"VALUE (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,SYSDATE(),?);";
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, usuario.getCodigo());
		pst.setString(2, usuario.getNombre());
		pst.setString(3, usuario.getDireccion());
		pst.setString(4, usuario.getBarrio());
		pst.setString(5, usuario.getMunicipio());
		pst.setString(6, usuario.getArea());
		pst.setString(7, usuario.getTelefono());
		pst.setString(8, usuario.getCiiu());
		pst.setString(9, usuario.getTipo_uso());
		pst.setString(10, usuario.getTipo_predio());
		pst.setString(11, usuario.getComercializador());
		pst.setString(12, usuario.getEstado_servicio());
		pst.setString(13, usuario.getVinculo());
		pst.setString(14, usuario.getTipo_conexion());
		pst.setString(15, usuario.getTension());
		pst.setString(16, usuario.getTipo_red());
		pst.setString(17, usuario.getMedidor());
		pst.setString(18, usuario.getMarca());
		pst.setString(19, usuario.getNotas());
		pst.setString(20, usuario.getUsuario());
		
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Add(UsuarioServicio usuario) throws SQLException {
		boolean result = false;
		String sql = "INSERT INTO usuario_servicio (CODIGO,NOMBRE,DIRECCION,BARRIO,MUNICIPIO,AREA,TELEFONO,CIIU,TIPO_USO,TIPO_PREDIO," +
				"COMERCIALIZADOR,ESTADO_SERVICIO,VINCULO,TIPO_CONEXION,TENSION,TIPO_RED,MEDIDOR,MARCA,NOTAS,FECHA_SISTEMA,USUARIO) " +
				"VALUE (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,SYSDATE(),?);";
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, usuario.getCodigo());
		pst.setString(2, usuario.getNombre());
		pst.setString(3, usuario.getDireccion());
		pst.setString(4, usuario.getBarrio());
		pst.setString(5, usuario.getMunicipio());
		pst.setString(6, usuario.getArea());
		pst.setString(7, usuario.getTelefono());
		pst.setString(8, usuario.getCiiu());
		pst.setString(9, usuario.getTipo_uso());
		pst.setString(10, usuario.getTipo_predio());
		pst.setString(11, usuario.getComercializador());
		pst.setString(12, usuario.getEstado_servicio());
		pst.setString(13, usuario.getVinculo());
		pst.setString(14, usuario.getTipo_conexion());
		pst.setString(15, usuario.getTension());
		pst.setString(16, usuario.getTipo_red());
		pst.setString(17, usuario.getMedidor());
		pst.setString(18, usuario.getMarca());
		pst.setString(19, usuario.getNotas());
		pst.setString(20, usuario.getUsuario());
		
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Update(String key) throws SQLException {
		boolean result = false;
		String sql = "UPDATE usuario_servicio SET CODIGO=?,NOMBRE=?,DIRECCION=?,BARRIO=?,MUNICIPIO=?,AREA=?,TELEFONO=?,CIIU=?,TIPO_USO=?,TIPO_PREDIO=?," +
				"COMERCIALIZADOR=?,ESTADO_SERVICIO=?,VINCULO=?,TIPO_CONEXION=?,TENSION=?,TIPO_RED=?,MEDIDOR=?,MARCA=?,NOTAS=? WHERE CODIGO=? ";
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, usuario.getCodigo());
		pst.setString(2, usuario.getNombre());
		pst.setString(3, usuario.getDireccion());
		pst.setString(4, usuario.getBarrio());
		pst.setString(5, usuario.getMunicipio());
		pst.setString(6, usuario.getArea());
		pst.setString(7, usuario.getTelefono());
		pst.setString(8, usuario.getCiiu());
		pst.setString(9, usuario.getTipo_uso());
		pst.setString(10, usuario.getTipo_predio());
		pst.setString(11, usuario.getComercializador());
		pst.setString(12, usuario.getEstado_servicio());
		pst.setString(13, usuario.getVinculo());
		pst.setString(14, usuario.getTipo_conexion());
		pst.setString(15, usuario.getTension());
		pst.setString(16, usuario.getTipo_red());
		pst.setString(17, usuario.getMedidor());
		pst.setString(18, usuario.getMarca());
		pst.setString(19, usuario.getNotas());
		pst.setString(20, key);
		
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Update(String key, UsuarioServicio usuario) throws SQLException {
		boolean result = false;
		String sql = "UPDATE usuario_servicio SET CODIGO=?,NOMBRE=?,DIRECCION=?,BARRIO=?,MUNICIPIO=?,AREA=?,TELEFONO=?,CIIU=?,TIPO_USO=?,TIPO_PREDIO=?," +
				"COMERCIALIZADOR=?,ESTADO_SERVICIO=?,VINCULO=?,TIPO_CONEXION=?,TENSION=?,TIPO_RED=?,MEDIDOR=?,MARCA=?,NOTAS=? WHERE CODIGO=? ";
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, usuario.getCodigo());
		pst.setString(2, usuario.getNombre());
		pst.setString(3, usuario.getDireccion());
		pst.setString(4, usuario.getBarrio());
		pst.setString(5, usuario.getMunicipio());
		pst.setString(6, usuario.getArea());
		pst.setString(7, usuario.getTelefono());
		pst.setString(8, usuario.getCiiu());
		pst.setString(9, usuario.getTipo_uso());
		pst.setString(10, usuario.getTipo_predio());
		pst.setString(11, usuario.getComercializador());
		pst.setString(12, usuario.getEstado_servicio());
		pst.setString(13, usuario.getVinculo());
		pst.setString(14, usuario.getTipo_conexion());
		pst.setString(15, usuario.getTension());
		pst.setString(16, usuario.getTipo_red());
		pst.setString(17, usuario.getMedidor());
		pst.setString(18, usuario.getMarca());
		pst.setString(19, usuario.getNotas());
		pst.setString(20, key);
		
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Remove(String key) throws SQLException {
		boolean result = false;
		String sql = "DELETE FROM usuario_servicio WHERE CODIGO = ?"; 
		
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, key);
		if (conexion.Update(pst) > 0) {
			conexion.Commit();
			result = true;
		}
		return result;
	}
	
	public boolean Find(String key) throws SQLException {
		boolean result = false;
		String sql = "SELECT * usuario_servicio WHERE CODIGO = ?"; 
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, key);
		ResultSet rs = conexion.Query(pst);
		if (rs.next()) {
			usuario = new UsuarioServicio();
			usuario.setCodigo(rs.getString("CODIGO"));
			usuario.setNombre(rs.getString("NOMBRE"));
			usuario.setDireccion(rs.getString("DIRECCION"));
			usuario.setBarrio(rs.getString("BARRIO"));
			usuario.setMunicipio(rs.getString("MUNICIPIO"));
			usuario.setArea(rs.getString("AREA"));
			usuario.setTelefono(rs.getString("TELEFONO"));
			usuario.setCiiu(rs.getString("CIIU"));
			usuario.setTipo_uso(rs.getString("TIPO_USO"));
			usuario.setTipo_predio(rs.getString("TIPO_PREDIO"));
			usuario.setComercializador(rs.getString("COMERCIALIZADOR"));
			usuario.setEstado_servicio(rs.getString("ESTADO_SERVICIO"));
			usuario.setVinculo(rs.getString("VINCULO"));
			usuario.setTipo_conexion(rs.getString("TIPO_CONEXION"));
			usuario.setTension(rs.getString("TENSION"));
			usuario.setTipo_red(rs.getString("TIPO_RED"));
			usuario.setMedidor(rs.getString("MEDIDOR"));
			usuario.setMarca(rs.getString("MARCA"));
			usuario.setNotas(rs.getString("NOTAS"));
			usuario.setUsuario(rs.getString("USUARIO"));
			usuario.setFecha_sistema(rs.getString("FECHA_SISTEMA"));
			result = true;
		}
		return result;
	}
	
	public ArrayList<UsuarioServicio> List() throws SQLException {
		ArrayList<UsuarioServicio> lista = new ArrayList<UsuarioServicio>();
		String sql = "SELECT * transformador ORDER BY FECHA_SISTEMA"; 
		ResultSet rs = conexion.Query(sql);
		if (rs.next()) {
			UsuarioServicio usuario = new UsuarioServicio();
			usuario.setCodigo(rs.getString("CODIGO"));
			usuario.setNombre(rs.getString("NOMBRE"));
			usuario.setDireccion(rs.getString("DIRECCION"));
			usuario.setBarrio(rs.getString("BARRIO"));
			usuario.setMunicipio(rs.getString("MUNICIPIO"));
			usuario.setArea(rs.getString("AREA"));
			usuario.setTelefono(rs.getString("TELEFONO"));
			usuario.setCiiu(rs.getString("CIIU"));
			usuario.setTipo_uso(rs.getString("TIPO_USO"));
			usuario.setTipo_predio(rs.getString("TIPO_PREDIO"));
			usuario.setComercializador(rs.getString("COMERCIALIZADOR"));
			usuario.setEstado_servicio(rs.getString("ESTADO_SERVICIO"));
			usuario.setVinculo(rs.getString("VINCULO"));
			usuario.setTipo_conexion(rs.getString("TIPO_CONEXION"));
			usuario.setTension(rs.getString("TENSION"));
			usuario.setTipo_red(rs.getString("TIPO_RED"));
			usuario.setMedidor(rs.getString("MEDIDOR"));
			usuario.setMarca(rs.getString("MARCA"));
			usuario.setNotas(rs.getString("NOTAS"));
			usuario.setUsuario(rs.getString("USUARIO"));
			usuario.setFecha_sistema(rs.getString("FECHA_SISTEMA"));
			
			lista.add(usuario);

		}
		return lista;
	}
}
